<

`of` を null 非許容の戻り値に移行し、`maybeOf` を追加します

まとめ

この移行ガイドでは、さまざまな静的コードを使用するコードの変換について説明します。ofnull 許容値を返すために使用されていたコンテキストから情報を取得する関数 値を返しますが、Null 非許容値を返すようになりました。

コンテクスト

Flutter には、いくつかのタイプのウィジェットのルックアップを可能にする共通のパターンがあります。 (通常InheritedWidgets、ただし他も) 静的メンバーを使用 通常呼び出される関数of

null 非許容性がデフォルトになったときは、 最も一般的に使用される API は、NULL 非許容値を返します。こう言うからですScrollable.of(context)そしてまだ必要です!オペレーターまたは?そして その呼び出し後のフォールバック値はぎこちなく感じられ、慣用的ではありませんでした null 非許容の Dart コード。

この移行の多くは、私たちが排除したときに実行されました。nullOkパラメータ ある以前の移行、 しかし、いくつかのofその移行ではメソッドが欠落していましたが、 そして、一部はその後、私たちのやり方に反して、null 許容の戻り値の型を追加しました。 よくあるパターン。

この移行では、影響を受けるofアクセサーは 2 つの呼び出しに分割されました。 これは、null 非許容値を返し、要求されたときに例外をスローしました。 値が存在しませんでした (まだ呼び出されています)of)、および null 許容値を返したもの 例外をスローしなかった値。例外がスローされなかった場合は null を返します。 present (と呼ばれる新しいメソッドmaybeOf)。

変更内容の説明

この変更により、これらの静的ファイルが変更されましたofNull 非許容値を返す API。 値が見つからない場合も、デバッグ モードでアサートされます。 リリースモードで例外をスローします。

  • AutofillGroup.of
  • DefaultTabController.of
  • DefaultTextHeightBehavior.of
  • Form.of
  • HeroControllerScope.of
  • Material.of
  • Overlay.of
  • PageStorage.of
  • PrimaryScrollController.of
  • RenderAbstractViewport.of
  • RestorationScope.of
  • Scrollable.of
  • ScrollNotificationObserver.of

この変更により、新しい静的機能も導入されました。maybeOfAPI の併用 上記の関数は、同じ値の null 許容バージョンを返します。 値が見つからない場合は、例外をスローせずに単純に null を返します。

  • AutofillGroup.maybeOf
  • DefaultTabController.maybeOf
  • DefaultTextHeightBehavior.maybeOf
  • Form.maybeOf
  • HeroControllerScope.maybeOf
  • Material.maybeOf
  • Overlay.maybeOf
  • PageStorage.maybeOf
  • PrimaryScrollController.maybeOf
  • RenderAbstractViewport.maybeOf
  • RestorationScope.maybeOf
  • Scrollable.maybeOf
  • ScrollNotificationObserver.maybeOf

移行ガイド

新しい形式の API を使用するようにコードを変更するには、まずすべての API を変換します。 元の静的インスタンスof関数 (null 可能性は 重要)maybeOf代わりにフォームを作成します。

移行前のコード:

ScrollController? controller = Scrollable.of(context);

移行後のコード:

ScrollController? controller = Scrollable.maybeOf(context);

次に、コードがofAPIに続いて 感嘆符の場合は、感嘆符を削除するだけです。 null 許容値を返さなくなりました。

移行前のコード:

ScrollController controller = Scrollable.of(context)!;

移行後のコード:

ScrollController controller = Scrollable.of(context);

以下のことも役立ちます。

  • unnecessary_non_null_assertion(リンターメッセージ) を識別します ある場所!オペレーターは削除されるべきです
  • unnecessary_null_checks(分析オプション) 場所を特定します どこ?オペレーターは必要ありません
  • unnecessary_null_in_if_null_operators場所を特定する ここで??オペレーターは必要ありません
  • unnecessary_nullable_for_final_variable_declarations(分析オプション) 不要な疑問符演算子を見つけますfinalconst変数

タイムライン

安定版リリース: 3.7

参考文献

API ドキュメント:

  • Material.of

関連する PR:

  • 追加maybeOfすべての場合において、ofnull 許容値を返します
  • 追加Overlay.maybeOf、 作るOverlay.ofnull 非許容インスタンスを返す